Para este projeto escolhi uma das bases de dados sugeridas pela Udacity: Financiamento da Campanha Presidencial dos EUA de 2016.
A idéia inicial era de se fazer a analise do estado dde NY, no entanto havia uma discrepancia muito grande nas contibuições uma vez que o comite “HILLARY VICTORY FUND” teve quase metade (45%) do valor de contribuições referentes a este estado em apenas 23 contribuições das 649.460 contribuições registradas, todas acima de U$ 100.000. Apenas este comite realizou contribuições acima deste valor. A maior contribuição abaixo deste valor de U$ 100.000 foi de U$ 11.816,25. A remoção dos outliers traria um dataset que não representaria o conjunto de dados do estado.
#Verifica a distribuição dos valores de controbuições do dataset
summary(USACampaign$contb_receipt_amt)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -10100 15 27 264 100 12777706
USACampaign$contb_receipt_amt <- abs(USACampaign$contb_receipt_amt)
USACampaign$contb_range <- cut(USACampaign$contb_receipt_amt, c(0,100,500,2000,50000,max(USACampaign$contb_receipt_amt)))
#Verifica contribuintes com contribuições superiores a U$ 100.000
USACampaign[USACampaign$contb_receipt_amt >= 100000,]$contbr_nm
## [1] HILLARY VICTORY FUND - UNITEMIZED HILLARY VICTORY FUND - UNITEMIZED
## [3] HILLARY VICTORY FUND - UNITEMIZED HILLARY VICTORY FUND - UNITEMIZED
## [5] HILLARY VICTORY FUND - UNITEMIZED HILLARY VICTORY FUND - UNITEMIZED
## [7] HILLARY VICTORY FUND - UNITEMIZED HILLARY VICTORY FUND - UNITEMIZED
## [9] HILLARY VICTORY FUND - UNITEMIZED HILLARY VICTORY FUND - UNITEMIZED
## [11] HILLARY VICTORY FUND - UNITEMIZED HILLARY VICTORY FUND - UNITEMIZED
## [13] HILLARY VICTORY FUND - UNITEMIZED HILLARY VICTORY FUND - UNITEMIZED
## [15] HILLARY VICTORY FUND - UNITEMIZED HILLARY VICTORY FUND - UNITEMIZED
## [17] HILLARY VICTORY FUND - UNITEMIZED HILLARY VICTORY FUND - UNITEMIZED
## [19] HILLARY VICTORY FUND - UNITEMIZED HILLARY VICTORY FUND - UNITEMIZED
## [21] HILLARY VICTORY FUND - UNITEMIZED HILLARY VICTORY FUND - UNITEMIZED
## [23] HILLARY VICTORY FUND - UNITEMIZED
## 119407 Levels: BLACKMORE, ANDI POTAMKIN ... ZYWICZYNSKI, JERRY MR.
#Valor máximo abaixo de U$ 100.000
max(USACampaign[USACampaign$contb_receipt_amt < 100000,]$contb_receipt_amt)
## [1] 11816.25
sum(USACampaign[USACampaign$contbr_nm == "HILLARY VICTORY FUND - UNITEMIZED",]$contb_receipt_amt)/sum(USACampaign$contb_receipt_amt)*100
## [1] 45.12158
count(USACampaign[USACampaign$contbr_nm == "HILLARY VICTORY FUND - UNITEMIZED",])
## # A tibble: 1 x 1
## n
## <int>
## 1 23
USACampaign$hillary_comitte <- ifelse(USACampaign$contbr_nm == "HILLARY VICTORY FUND - UNITEMIZED", "Y", "N")
#Contribuições HILLARY VICTORY vs OTHERS - Distribuição dos valores e total de contribuição
g1 <- ggplot(aes(x=hillary_comitte),
data = USACampaign)+
geom_bar(stat = 'count')+
theme(axis.text.x = element_text(angle = 45, hjust = 1))+
ggtitle('Comparação das contribuições entre comite da Hillary e outros')
g2 <- ggplot(aes(x=hillary_comitte, y=contb_receipt_amt),
data = USACampaign)+
geom_bar(stat = 'summary', fun.y = 'sum')+
theme(axis.text.x = element_text(angle = 45, hjust = 1))+
ggtitle('Comparação da soma das contribuições entre comite da Hillary e outros')
#Distribuição de valores entre as faixas vs total dos valores por faixa
grid.arrange(g1, g2, ncol = 2)
g3 <- ggplot(aes(x=contb_range),
data = subset(USACampaign, !is.na(contb_range)))+
geom_bar(stat = 'count')+
theme(axis.text.x = element_text(angle = 45, hjust = 1))+
ggtitle('Distribuição das contribuições em NY')
g4 <- ggplot(aes(x=contb_range, y=contb_receipt_amt),
data = subset(USACampaign, !is.na(contb_range)))+
geom_bar(stat = 'summary', fun.y = 'sum')+
theme(axis.text.x = element_text(angle = 45, hjust = 1))+
ggtitle('Distribuição das contribuições em NY')
grid.arrange(g3, g4, ncol = 2)
# plotbox com e sem contribuições com valores superiores a R$ 100.000,00
ggplot(aes(y=contb_receipt_amt, x=cand_nm),
data = USACampaign)+
geom_boxplot()+
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplot(aes(y=contb_receipt_amt, x=cand_nm),
data = subset(USACampaign, contbr_nm != "HILLARY VICTORY FUND - UNITEMIZED"))+
geom_boxplot()+
theme(axis.text.x = element_text(angle = 45, hjust = 1))
rm(g1, g2, g3, g4)
Esta discrepancia traria um prejuizo na avaliação das contribuições entre os candidatos e restringiria as analises dos dados. Desta forma optei por fazer a analise das contribuições feitas pelos eleitores do estado do TX, que traz uma distribuição mais homogenea nas contribuições.
========================================================
## [1] 12084 19
## [1] 24 19
##
## DALLA DALLAA DALLAD DALLALS DALLAS
## 1 1 4 1 40656
## DALLAS TEXAS DALLAS TX DALLAS, DALLAS, TX DALLAS9
## 2 1 1 1 1
## DALLASTX DALLASV DALLLAS
## 1 2 1
Algumas verificações simples nesta base de dados nos aponta necessidade de tratamento das informações. Este tratamento será feito em um script a parte, em python (tratarDados.py). Maiores detalhes sobre este tratamentos pode ser visualizado no arquivo Tratamento de dados.md.
## [1] 16600
## RETIRED INFORMATION REQUESTED NOT EMPLOYED
## 142978 25338 24405
## LAWYER SELF-EMPLOYED TEACHER
## 17517 13267 13119
## HOMEMAKER ENGINEER PHYSICIAN
## 11325 9016 8817
## SALES NURSE CONSULTANT
## 6943 5613 5519
## REAL ESTATE MANAGER
## 5327 4851 4407
## ACCOUNTANT SOFTWARE DEVELOPER CEO
## 4054 2896 2750
## PRESIDENT SOFTWARE ENGINEER RN
## 2386 2374 2372
## STUDENT CPA EXECUTIVE
## 2357 2081 2008
## EDUCATOR PROJECT MANAGER DIRECTOR
## 1866 1710 1472
## WRITER RANCHER TRUCK DRIVER
## 1425 1409 1403
## MARKETING OFFICE MANAGER INSURANCE
## 1279 1262 1224
## PILOT PHARMACIST ARTIST
## 1167 1118 1096
## ADMINISTRATOR PSYCHOLOGIST ANALYST
## 1049 1049 1034
## GEOLOGIST INVESTOR CONSTRUCTION
## 1030 1021 1005
## FARMER CONTRACTOR LIBRARIAN
## 977 970 966
## PARALEGAL REFUSED CFO
## 945 922 901
## SOCIAL WORKER VICE PRESIDENT ARCHITECT
## 880 859 857
## DENTIST MANAGEMENT DISABLED
## 843 806 805
## IT FINANCE DRIVER
## 777 754 739
## BOOKKEEPER PASTOR MUSICIAN
## 720 716 715
## INVESTMENTS ELECTRICIAN BANKER
## 704 665 659
## SALES MANAGER IT MANAGER FINANCIAL ADVISOR
## 659 652 641
## DESIGNER MINISTER VETERINARIAN
## 640 616 615
## PHOTOGRAPHER GENERAL MANAGER PSYCHOTHERAPIST
## 605 573 573
## FLIGHT ATTENDANT GEOPHYSICIST GRAPHIC DESIGNER
## 572 572 569
## SECRETARY SCIENTIST TECHNICIAN
## 567 564 534
## ENTREPRENEUR PROPERTY MANAGER BUSINESS ANALYST
## 523 514 513
## SUPERVISOR RETAIL EDUCATION
## 499 484 480
## CLERK ADMINISTRATIVE ASSISTANT LEGAL ASSISTANT
## 477 471 470
## BUSINESS PHYSICAL THERAPIST ELECTRICAL ENGINEER
## 469 468 456
## HUMAN RESOURCES LANDMAN BANKING
## 456 454 449
## SOFTWARE EXECUTIVE DIRECTOR EXECUTIVE ASSISTANT
## 447 440 437
## ACCOUNT MANAGER SALES REPRESENTATIVE (Other)
## 429 418 168408
## NA's
## 139
## Min. 1st Qu. Median Mean 3rd Qu.
## "2013-10-21" "2016-02-06" "2016-04-29" "2016-04-27" "2016-08-12"
## Max.
## "2016-12-31"
## [1] 548372 29
## [1] "cmte_id" "cand_id"
## [3] "cand_nm" "contbr_nm"
## [5] "contbr_city" "contbr_st"
## [7] "contbr_zip" "contbr_employer"
## [9] "contbr_occupation" "contb_receipt_amt"
## [11] "contb_receipt_dt" "receipt_desc"
## [13] "memo_cd" "memo_text"
## [15] "form_tp" "file_num"
## [17] "tran_id" "election_tp"
## [19] "X" "city"
## [21] "lon" "lat"
## [23] "party" "cmte_nm"
## [25] "cmte_dsgn" "contb_receipt_dt_day"
## [27] "contb_receipt_dt_month" "contb_receipt_dt_year"
## [29] "contb_receipt_date"
## 'data.frame': 548372 obs. of 29 variables:
## $ cmte_id : Factor w/ 26 levels "C00458844","C00496034",..: 7 16 16 8 7 7 16 16 7 16 ...
## $ cand_id : Factor w/ 25 levels "P00003392","P20002671",..: 1 23 23 12 1 1 23 23 1 23 ...
## $ cand_nm : Factor w/ 25 levels "Bush, Jeb","Carson, Benjamin S.",..: 4 23 23 20 4 4 23 23 4 23 ...
## $ contbr_nm : chr "MILLARD, SUSAN C." "SELLERS, CHRISTINE" "SELLERS, DAVID" "LEONE, MICHELLE" ...
## $ contbr_city : chr "CORPUS CHRISTI" "FORT WORTH" "WILLIS" "NORTH RICHLAND HILLS" ...
## $ contbr_st : chr "TX" "TX" "TX" "TX" ...
## $ contbr_zip : chr "784112213" "76108" "77318" "761826749" ...
## $ contbr_employer : chr "N/A" "BAYLOR HEALTHCARE SYSTEM" "RETIRED" "NOT EMPLOYED" ...
## $ contbr_occupation : Factor w/ 17310 levels ""," COUNSELOR",..: 13428 10140 13428 10107 14284 13860 7668 7668 11332 7205 ...
## $ contb_receipt_amt : num 37.1 127.1 80 15 50 ...
## $ contb_receipt_dt : chr "16-APR-16" "28-SEP-16" "01-DEC-16" "06-MAR-16" ...
## $ receipt_desc : chr "" "" "" "" ...
## $ memo_cd : chr "X" "X" "X" "" ...
## $ memo_text : chr "* HILLARY VICTORY FUND" "" "" "* EARMARKED CONTRIBUTION: SEE BELOW" ...
## $ form_tp : chr "SA18" "SA18" "SA18" "SA17A" ...
## $ file_num : int 1091718 1146165 1146165 1077404 1091718 1091718 1146165 1146165 1091718 1146165 ...
## $ tran_id : chr "C4725643" "SA18.90357" "SA18.120784" "VPF7BKZGYE4" ...
## $ election_tp : chr "P2016" "G2016" "G2016" "P2016" ...
## $ X : logi NA NA NA NA NA NA ...
## $ city : chr "CORPUS CHRISTI" "FORT WORTH" "WILLIS" "NORTH RICHLAND HILLS" ...
## $ lon : num -97.4 -97.3 -95.5 -97.2 -98.5 ...
## $ lat : num 27.8 32.8 30.4 32.9 29.4 ...
## $ party : chr "DEM" "REP" "REP" "DEM" ...
## $ cmte_nm : chr "HILLARY FOR AMERICA" "DONALD J. TRUMP FOR PRESIDENT, INC." "DONALD J. TRUMP FOR PRESIDENT, INC." "BERNIE 2016" ...
## $ cmte_dsgn : chr "P" "P" "P" "P" ...
## $ contb_receipt_dt_day : int 16 28 1 6 9 4 29 30 21 4 ...
## $ contb_receipt_dt_month: Ord.factor w/ 12 levels "JAN"<"FEB"<"MAR"<..: 4 9 12 3 4 4 11 11 4 10 ...
## $ contb_receipt_dt_year : int 16 16 16 16 16 16 16 16 16 16 ...
## $ contb_receipt_date : Date, format: "2016-04-16" "2016-09-28" ...
## cmte_id cand_id cand_nm
## C00575795:203928 P00003392:203928 Clinton, Hillary Rodham :203928
## C00574624:138799 P60006111:138799 Cruz, Rafael Edward 'Ted':138799
## C00577130: 79955 P60007168: 79955 Sanders, Bernard : 79955
## C00580100: 77916 P80001571: 77916 Trump, Donald J. : 77916
## C00573519: 23694 P60005915: 23694 Carson, Benjamin S. : 23694
## C00458844: 8984 P60006723: 8984 Rubio, Marco : 8984
## (Other) : 15096 (Other) : 15096 (Other) : 15096
## contbr_nm contbr_city contbr_st
## Length:548372 Length:548372 Length:548372
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## contbr_zip contbr_employer contbr_occupation
## Length:548372 Length:548372 RETIRED :142978
## Class :character Class :character INFORMATION REQUESTED: 25338
## Mode :character Mode :character NOT EMPLOYED : 24405
## LAWYER : 17517
## SELF-EMPLOYED : 13267
## (Other) :324728
## NA's : 139
## contb_receipt_amt contb_receipt_dt receipt_desc
## Min. : 0.01 Length:548372 Length:548372
## 1st Qu.: 25.00 Class :character Class :character
## Median : 40.00 Mode :character Mode :character
## Mean : 175.02
## 3rd Qu.: 100.00
## Max. :16600.00
##
## memo_cd memo_text form_tp
## Length:548372 Length:548372 Length:548372
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## file_num tran_id election_tp X
## Min. :1003942 Length:548372 Length:548372 Mode:logical
## 1st Qu.:1077404 Class :character Class :character NA's:548372
## Median :1096256 Mode :character Mode :character
## Mean :1097493
## 3rd Qu.:1133832
## Max. :1146285
##
## city lon lat party
## Length:548372 Min. :-124.03 Min. :24.66 Length:548372
## Class :character 1st Qu.: -97.74 1st Qu.:29.76 Class :character
## Mode :character Median : -96.93 Median :30.26 Mode :character
## Mean : -97.11 Mean :30.99
## 3rd Qu.: -95.47 3rd Qu.:32.76
## Max. : -71.06 Max. :46.88
## NA's :613 NA's :613
## cmte_nm cmte_dsgn contb_receipt_dt_day
## Length:548372 Length:548372 Min. : 1.00
## Class :character Class :character 1st Qu.: 8.00
## Mode :character Mode :character Median :16.00
## Mean :16.36
## 3rd Qu.:25.00
## Max. :31.00
##
## contb_receipt_dt_month contb_receipt_dt_year contb_receipt_date
## OCT : 68919 Min. :13.00 Min. :2013-10-21
## JUL : 57731 1st Qu.:16.00 1st Qu.:2016-02-06
## MAR : 56585 Median :16.00 Median :2016-04-29
## SEP : 52846 Mean :15.81 Mean :2016-04-27
## APR : 50181 3rd Qu.:16.00 3rd Qu.:2016-08-12
## AUG : 49822 Max. :16.00 Max. :2016-12-31
## (Other):212288
Este dataset do estado do Texas contem 548.396 observações com 28 variaveis. O dataset original (sem tratamento) contém 18 variáveis.
Nesta primeira analise tentei identificar o período em que as contribuições ocorreram com mais frequencia.
## Min. 1st Qu. Median Mean 3rd Qu.
## "2013-10-21" "2016-02-06" "2016-04-29" "2016-04-27" "2016-08-12"
## Max.
## "2016-12-31"
## Warning: Removed 2 rows containing missing values (geom_path).
## Warning: Removed 101355 rows containing non-finite values (stat_bin).
## Warning: Removed 3 rows containing missing values (geom_path).
## Warning: Ignoring unknown parameters: binwidth, bins, pad
## Warning: Ignoring unknown parameters: binwidth, bins, pad
Em sequencia realizei uma análise da distribuição dos valores de contribuições.
Quando gerei o primeiro gráfico com a distribuição dos valores, percebi uma contagem muito grande para as ocorrencias de menor valor (mais de 350.00). Reduzi então o binwidth em 10x para que as barras contivessem menos valores na mesma faixa uma vez que para valores baixos temos uma gama de valores muito grande. Depois reduzi o limite do eixo x com o objetivo de ter uma maior visibilidade das distribuições.
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.01 25.00 40.00 175.02 100.00 16600.00
## 95%
## 700
## Warning: Removed 27359 rows containing non-finite values (stat_bin).
USACampaign.by_city <- USACampaign %>%
group_by(city) %>%
summarise(count = n()) %>%
arrange(desc(count))
head(USACampaign.by_city, 25)
## # A tibble: 25 x 2
## city count
## <chr> <int>
## 1 HOUSTON 71294
## 2 AUSTIN 57745
## 3 DALLAS 41118
## 4 SAN ANTONIO 30240
## 5 FORT WORTH 16307
## 6 SPRING 12167
## 7 PLANO 9603
## 8 EL PASO 7763
## 9 ARLINGTON 7324
## 10 KATY 6063
## # ... with 15 more rows
top10_city <- head(USACampaign.by_city, 25)$city
# Ordena as cidades com base na quantidade de contribuições
USACampaign$city_ordered <- factor(USACampaign$city, USACampaign.by_city$city)
# Distribuição das contribuições entre as cidades com mais contribuições
ggplot(aes(x=city_ordered),
data = subset(USACampaign, city %in% top10_city))+
geom_bar(stat = 'count')+
theme(axis.text.x = element_text(angle = 45, hjust = 1))
## geom_path: Each group consists of only one observation. Do you need to
## adjust the group aesthetic?
O conjunto de dados possui registros de contribuições para o estado de TX, com 28 atributos no arquivo tratado e 18 no arquivo original.
Os principais atributos deste conjunto de dados são os candidatos (cand_nm) e os valores das contribuições (contb_receipt_amt).
Atributos realcionados a origem das contribuições serão muito úteis nesta analise. Entre elas estão:
Além destas existem variáveis importantes como o partido do candidato.
Sim. Foram criados as seguintes variaveis: - A partir da data, criei colunas com os componentes da data de contribuição (dia, mês e ano) - Foram incorporados dados do dataset de CEP (zipcode): cidade, longitude e latitude - Foi adicionada uma coluna com faixas dos valores doados. - A partir da base de dados dos candidatos (obtido na FEC), foi incorporado o partido do candidato - A partir da base de dados dos comites (obtido na FEC), foi incorporado o nome do comite
Foram realizados tratamentos nos valores de contribuição. Para os valores negativos, foi considerado o valor absoluto. As contribuições zeradas foram eliminadas.
As datas de contribuição carregadas originalmente como caracter, foram convertidas para Date e quebrada em colunas separadas para dia, mes e ano.
Conforme apresentado na seção de tratamento de dados, fiz uma ajuste nos nomes das cidades para eleminar as cidades iguais registradas com grafias diferentes. O mesmo tratamento foi realizado para a ocupação dos contribuintes.
Todos os tratamentos foram realizados num script python a parte (tratarDados.py).
Aqui fiz uma analise das distriuição dos valores ao longo do tempo. No primeiro gráfico foi feita uma analise mais ampla por todo o período compreendido no dataset. No segundo reduzi o faixa de valores para o ano de 2016 e foi considerada as contribuições realizadas dentro de 99% da amostragem.
## Warning: Removed 101744 rows containing missing values (geom_point).
Nesta analise podemos perceber a presença de faixas horizontais bem definidas para os valores doados com mais frequncias. Estes normalmente ão valores redodndos. Uma faixa bem definida é a 2700 dolares. Talvez houvesse uma opção explicita neste valor, ou fosse um teto de contribuição.
Estas mesmas faixas podem ser percebidas quando analisamos a os valores de contribuição por candidato, como visto abaixo.
## Warning: Removed 1782 rows containing missing values (geom_point).
## Warning: Removed 7303 rows containing missing values (geom_point).
Com base nas informações de longitude (lon) e latitude (lat) recolhidas na base de dados de zipcode, mapeei as contribuições realizadas na estado do Texas.
## Warning: use rgdal::readOGR or sf::st_read
## Warning: use rgdal::readOGR or sf::st_read
## Object of class SpatialPolygonsDataFrame
## Coordinates:
## min max
## x -106.64565 -93.50804
## y 25.83716 36.50070
## Is projected: NA
## proj4string : [NA]
## Data attributes:
## STATEFP COUNTYFP COUSUBFP COUSUBNS GEOID
## 48:862 027 : 9 90005 : 1 01938476: 1 4800190650: 1
## 309 : 9 90010 : 1 01938477: 1 4800191205: 1
## 085 : 8 90015 : 1 01938478: 1 4800191390: 1
## 099 : 8 90017 : 1 01938479: 1 4800192615: 1
## 215 : 8 90020 : 1 01938480: 1 4800192945: 1
## 277 : 8 90025 : 1 01938481: 1 4800390085: 1
## (Other):812 (Other):856 (Other) :856 (Other) :856
## NAME NAMELSAD LSAD CLASSFP
## Cedar Creek Lake: 3 Cedar Creek Lake CCD: 3 22:862 Z5:862
## Amarillo : 2 Amarillo CCD : 2
## Dalhart : 2 Dalhart CCD : 2
## Fort Hood : 2 Fort Hood CCD : 2
## Gladewater : 2 Gladewater CCD : 2
## Kilgore : 2 Kilgore CCD : 2
## (Other) :849 (Other) :849
## MTFCC CNECTAFP NECTAFP NCTADVFP FUNCSTAT ALAND
## G4040:862 NA's:862 NA's:862 NA's:862 S:862 Min. :2.939e+07
## 1st Qu.:3.446e+08
## Median :5.289e+08
## Mean :7.850e+08
## 3rd Qu.:9.027e+08
## Max. :9.519e+09
##
## AWATER INTPTLAT INTPTLON
## Min. :0.000e+00 +25.9648763: 1 -093.7054610: 1
## 1st Qu.:1.255e+06 +26.1029227: 1 -093.7135949: 1
## Median :3.961e+06 +26.1388555: 1 -093.7757556: 1
## Mean :2.206e+07 +26.1503878: 1 -093.7858765: 1
## 3rd Qu.:1.177e+07 +26.1710987: 1 -093.7971206: 1
## Max. :1.262e+09 +26.1883773: 1 -093.8170037: 1
## (Other) :856 (Other) :856
## Warning: Removed 613 rows containing missing values (geom_point).
Abaixo o link para referências usadas para este trabalho
Detailed Files About Candidates, Parties and Other Committees - FEC
Arquivo SHP das cidades do estado do Texas - United States Census